// 导入joi信息验证模块
import joi from "joi";
// 用户名验证规则
const username = joi.string().alphanum().min(3).max(13).required();
// 密码验证规则
const password = joi.string().pattern(/^[\S]{6,12}$/).required();
// u_id验证规则
const u_id = joi.number().integer().min(1).required();
// 昵称验证规则
const nickname = joi.string().required();
// 邮箱验证规则
const email = joi.string().email().required();
// 头像验证规则 base64
const avatar = joi.string().dataUri().required();

// 创建注册和登录表单的验证规则对象
export const reg_login_schema = {
    body: {
        username,
        password
    }
}

// 创建并导出更新用户基本信息表单的验证规则对象
export const update_userinfo_schema = {
    body: {
        u_id,
        nickname,
        email
    }
}

// 创建并导出重置密码表单的验证规则对象
export const update_password_schema = {
    body: {
        oldPwd: password,
        // 使用joi.not(joi.ref())验证新密码与旧密码不能相同
        // 解读：
        // 1. joi.ref('oldPwd') 表示 newPwd 的值必须和 oldPwd 的值保持一致
        // 2. joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值
        // 3. .concat() 用于合并 joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则
        newPwd: joi.not(joi.ref('oldPwd')).concat(password)
    }
}

// 创建并导出更换头像表单的验证规则对象
export const update_avatar_schema = {
    body: {
        avatar
    }
}